﻿using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EXCEL = Microsoft.Office.Interop.Excel; //uno de excel


/// <summary>
/// Esta clase toma datos de la base de datos y vacia la informacion adecuada en el formato institucionalizado de la UTH en donde 
/// se regstra el reporte de asistencia semanal
/// Metodos que contiene son:
/// generarExcel (strin ruta,ArrayList datos);
/// </summary>
public class CrearExcel
{
    /// <summary>
    /// Metodo que construye el reporte semanal se asistencia
    /// </summary>
    /// <param name="ruta">ruta donde se encuentra la plantilla</param>
    /// <param name="rutaDestino">ruta donde se guardará el reporte</param>
    /// <param name="fecha">fecha de creacion del reporte</param>
    /// <param name="datos">lista de los datos que se mostrarán en el reporte</param>
    public void generarExcel(string ruta, string rutaDestino,string fecha, ArrayList datos) {
        object oMissing = System.Reflection.Missing.Value;

        EXCEL.Application excel = new EXCEL.Application();
        EXCEL.Workbooks libros = excel.Workbooks;
        libros.Add(ruta);

        EXCEL.Workbook libro = libros.get_Item(1);

        EXCEL.Worksheet hoja = (EXCEL.Worksheet)libro.Worksheets[1];
        hoja.Visible = EXCEL.XlSheetVisibility.xlSheetVisible;
        excel.Visible = false;

        hoja.Name = "Reporte_Semanal"; //nombre de la hoja de excel


        #region
        int col = 3;//columna donde empieza el barrido de la lista en TIC
        int colEs = 3;//especialidad columna
        int colITI = 4; //para recorrer las columnas de los grupos de ITI 
        for (int i = 0; i < datos.Count; i++)
        {

            string grupo = "";
            string letra3 = "";
            ClaseReporte iti82 = (ClaseReporte)datos[i];
            
            grupo = iti82.Grupo;
            try {
                if (grupo.Length == 6)
                {
                    letra3 = grupo.Substring(0, 3);
                }
                else { letra3 = grupo.Substring(0, 4); }
            }
            catch { grupo = "nAplica"; }

            if (letra3.Length==4) { 
                //se trata de un grupo con especialidad
                //es un grupo de tronco común
                int row = 26;//renglon donde inicia el listado de los grupos de tic
                

                hoja.Cells[24, colEs] = iti82.Grupo;
                hoja.Cells[25, colEs] = iti82.CantdadAlumno;

                int rowEsp = 26;
                for (int x = 0; x < iti82.Arr.Length; x++)
                {
                    hoja.Cells[rowEsp, colEs] = iti82.Arr[x];
                    rowEsp++;
                }
                row++;
                colEs++;
            }
            
            if (letra3 == "ITI") { 
                // es un grupo de ingeniería
                int row = 37;//renglon 
                

                hoja.Cells[35, colITI] = iti82.Grupo;
                hoja.Cells[36, colITI] = iti82.CantdadAlumno;

                int rowITI = 37;
                for (int x = 0; x < iti82.Arr.Length; x++)
                {
                    hoja.Cells[rowITI, colITI] = iti82.Arr[x];
                    rowITI++;
                }
                row++;
                colITI++;
            }

            if (letra3 == "TIC") { 
                //es un grupo de tronco común
                int row = 16;//renglon donde inicia el listado de los grupos de tic

                hoja.Cells[14, col] = iti82.Grupo;
                hoja.Cells[15, col] = iti82.CantdadAlumno;

                int rowTIC = 16;
                for (int x = 0; x < iti82.Arr.Length; x++)
                {
                    hoja.Cells[rowTIC, col] = iti82.Arr[x];
                    rowTIC++;
                }
                row++;
                col++;
            }    
        }
        #endregion
        
        try
        {
            //excel.ActiveWorkbook.SaveAs(rutaDestino + "/" + fecha+".xls");
            if (System.IO.File.Exists(rutaDestino + "" + fecha + ".xls"))
            {
                System.IO.File.Delete(rutaDestino + "" + fecha + ".xls");
                hoja.SaveAs(rutaDestino + "" + fecha + ".xls", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
            }
            else { hoja.SaveAs(rutaDestino + "" + fecha + ".xls", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); }
            
        }
        catch {
        }
        libro.Close();//cerramos el doc de Excel
    }

}